<template>
  <div id="wrap" :style="{ height: screenHeight + 'px' }">
    <div
      id="main"
      :style="{ top: nowTop + 'px' }"
      v-for="item in urlList"
      :key="item.Id"
    >
      <!-- {{ item.Url }} -->
      <div :id="'page' + item.Id" class="page">
        <div class="videoPlayer">
          <xg-player :video="item" @triggerEvent="triggerEvent"></xg-player>
        </div>
      </div>
    </div>
  </div>
</template>
 
<script>
import XgPlayer from "@/components/xgPlayer";
import api from "@api/index";
export default {
  name: "Home",
  // 注册组件
  components: {
    XgPlayer,
  },
  data() {
    return {
      urlList: [
        {
          Id: 86,
          Key: "lixianhe/1698248196096.mp4",
          Hash: "ln1vKceq3EvaojbQF322d_F0yXo7",
          Type: "2",
          Title: "盘点猝不及防的爆笑瞬间01.mp4",
          Cover: "",
          Url: "http://wxapp.qiniu.ijemy.com/lixianhe/1698248196096.mp4",
          IsCollet: false,
          IsLove: false,
          CollectNum: 4653,
          LoveNum: 0,
          Uid: 0,
          ShareNum: 444,
        },
        {
          Id: 87,
          Key: "lixianhe/1698248235318.mp4",
          Hash: "lhUzYT1Mx_A9qlepm83VZ7_0HRUC",
          Type: "2",
          Title: "盘点猝不及防的爆笑瞬间03.mp4",
          Cover: "",
          Url: "http://wxapp.qiniu.ijemy.com/lixianhe/1698248235318.mp4",
          IsCollet: true,
          IsLove: true,
          CollectNum: 1863,
          LoveNum: 0,
          Uid: 0,
          ShareNum: 444,
        },
      ],
      screenWeight: 0, // 屏幕宽度
      screenHeight: 0, // 屏幕高度
      index: 1, // 用于判断翻页
      curIndex: 1, // 当前页的index
      startTime: 0, // 翻屏起始时间
      endTime: 0, // 上一次翻屏结束时间
      nowTop: 0, // 翻屏后top的位置
      pageNum: 0, // 一共有多少页
      main: Object,
      obj: Object,
    };
  },
  beforeCreate() {
    this.getUrl();
  },
  created() {
    this.getUrl();
  },
  mounted() {
    this.screenWeight = document.documentElement.clientWidth;
    this.screenHeight = document.documentElement.clientHeight - 150;
    this.main = document.getElementById("main");
    this.obj = document.getElementsByTagName("div");
    for (let i = 0; i < this.obj.length; i++) {
      if (this.obj[i].className == "page") {
        this.obj[i].style.height = this.screenHeight + "px";
      }
    }
    this.pageNum = document.querySelectorAll(".page").length;

    // 浏览器兼容
    if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1) {
      document.addEventListener("DOMMouseScroll", this.scrollFun, false);
    } else if (document.addEventListener) {
      document.addEventListener("mousewheel", this.scrollFun, false);
    } else if (document.attachEvent) {
      document.attachEvent("onmousewheel", this.scrollFun);
    } else {
      document.onmousewheel = this.scrollFun;
    }
  },
  methods: {
    getUrl() {
      this.loading = true;
      api.video().then(
        (res) => {
          console.log(res);
          this.urlList = res.data;
          console.log(this.urlList);
        },
        (err) => {
          console.log(err);
        }
      );
    },
    scrollFun(event) {
      this.startTime = new Date().getTime();
      // mousewheel事件中的 “event.wheelDelta” 属性值：返回的如果是正值说明滚轮是向上滚动
      // DOMMouseScroll事件中的 “event.detail” 属性值：返回的如果是负值说明滚轮是向上滚动
      let delta = event.detail || -event.wheelDelta;
      // 如果当前滚动开始时间和上次滚动结束时间的差值小于1.5s，则不执行翻页动作，这样做是为了实现类似节流的效果
      if (this.startTime - this.endTime > 500) {
        if (
          delta > 0 &&
          parseInt(this.main.offsetTop) >=
            -(this.screenHeight * (this.pageNum - 2))
        ) {
          // 向下滚动
          this.index++;
          this.toPage(this.index);
        } else if (delta < 0 && parseInt(this.main.offsetTop) < 0) {
          // 向上滚动
          this.index--;
          this.toPage(this.index);
        }
        // 本次翻页结束，记录结束时间，用于下次判断
        this.endTime = new Date().getTime();
      }
    },
    // 翻页
    toPage(index) {
      if (index != this.curIndex) {
        let delta = index - this.curIndex;
        this.nowTop = this.nowTop - delta * this.screenHeight;
        this.curIndex = index;
      }
    },
    triggerEvent() {
      console.log(1);
    },
  },
};
</script>
<style scoped>
html,
body {
  /* height: 100%; */
}

body,
ul,
li,
a,
p,
div {
  /*慎删*/
  padding: 0px;
  margin: 0px;
}

#wrap {
  overflow: hidden;
  width: 100%;
}

#main {
  position: relative;
  transition: top 1.5s;
}

.page {
  /*谨删*/
  width: 100%;
  margin: 0;
}
.videoPlayer {
  height: 800px;
  width: 1100px;
  margin: 0 auto;
}
.icon {
  color: rgb(9, 100, 180);
}
</style>